A class of products that must react and perform in a deterministic, time sensitive manner relies on real time software, which in turn relies on Real Time Operating Systems (RTOS). An operating system (OS) is a program designed to manage the resources of a computing platform. An RTOS is optimized to manage the resources of computing platform in a highly predictable way so that concepts, such as priority, are strictly enforced, while minimizing the latency involved in servicing events. Such operating systems are designed to be more specialized and accordingly offer much less delay than would be expected from more generic OS's, such as Unix, Linux, Microsoft Windows etc. Communication systems, including telecommunication products like PBXs, are examples of products employing RTOS's. These products are typically very complex and represent thousands of person-years of development.
As computer hardware technology continues to advance, there is a growing demand for taking Real Time Software Applications (RTSAs), for example software for operating a PBX, that previously ran on specialized computing platforms and porting them to modern servers. On the other hand, the software required for an RTSA can be very large, and the cost of modifying it for an OS other than the one for which it was written, is correspondingly large, especially as RTOS performance is typically still required. At the same time there is interest in having such software share the resources of the OS with other applications, in the interest of reducing product cost.
Previous solutions for porting an RTSA to a generic operating system included the concept of a virtual machine. Virtual machine software allows for a single physical machine to appear as one or more virtual instances of the machine from the perspective of the operating system(s), for example an RTOS, and applications executing on the platform. In these solutions, a virtual machine manager (VMM) typically either takes control of the underlying hardware, and schedules the virtual OS instances or runs under an existing operating system (known as the host OS) but requires that the host OS be modified to support special kernel level drivers. This leads to unacceptable latency and poor real time performance, or requires that the system be partitioned so that the underlying hardware is still managed by the RTOS.
Another technique is processor emulation, in which the original target processor for which the application was written is emulated, and the emulation is run on the new host OS. Each instruction of the original processor has to be emulated. However, this technique is not acceptable where efficient real time performance is required.
Other solutions involve modifying an RTSA to run on a different OS to ensure adequate priorities and prevention of interference from adjacent applications sharing the computing resources with the real time application. The cost and complexity of these approaches makes them unattractive.
Another solution, as multiprocessors become more available, is to dedicate one processor to the RTSA with its associated RTOS, and a second processor to other application software running under another OS, such as Linux. The drawback is that hardware such as memory and communications interfaces have to be duplicated as well. In addition, utilization of the processor resources is less efficient since they cannot be arbitrarily shared by the various applications software.